package com.ktjiaoyu.utils.fastjson2;

import com.alibaba.fastjson2.JSONWriter;
import com.alibaba.fastjson2.filter.PropertyFilter;
import com.alibaba.fastjson2.filter.PropertyPreFilter;

import java.util.Set;
//属性过滤器   用于过滤不需要序列化的属性
public class FastJosn2SensitivePropFilter implements PropertyPreFilter {
    //通过构造器注入需要排除的属性集合
    public FastJosn2SensitivePropFilter(Set<String> excludes) {
        this.excludes = excludes;
    }

    private Set<String> excludes;


    //    处理字段.返回true表示要序列化，false表示不需要序列化
    @Override
    public boolean process(JSONWriter jsonWriter, Object obj, String propertyName) {
        if (excludes == null) {
            //如果没有要排除的属性，直接返回true，表示要序列化
            return true;
        }
        //不包含在excludes集合中的属性，需要序列化
        return !excludes.contains(propertyName);
    }
}
